System interconnection models describe three layers controlling aspects of data transmission: transaction layer, data link layer, and physical layer. Each layer independently performs tasks to successfully transmit data from a source device to a target device. The transaction layer, for example, may comprise a packet-based protocol to packetize or encapsulate data for transmission. The packet-based protocol sizes the packets of data to optimize transmission through several network devices. The data link layer inserts packet sequence numbers and error verification data, such as symbols and checksums, to verify data integrity during the transmission. Lastly, the physical layer reformats the data to optimize transmission of the data across a physical interconnection, or communication medium, and a physical layer at the target device reassembles the data.
The link layers at the source device and target device maintain data integrity by performing verifications of the data such as disparity and checksum verifications. Disparity verifications monitor the running disparity of a data transmission. For example, an eight bit/ten bit (8b/10b) encoding scheme balances the count of logical ones and logical zeros so that the numbers of each are substantially equivalent. When ten bits are sent having more logical ones than logical zeros, a subsequent transmission will have more logical zeros than ones, flipping the running disparity from more logical ones to more logical zeros, or from one heavy to zero heavy. When ten bits are sent with equal numbers of ones and zeroes, such a symbol is said to have “neutral” disparity. In some situations, a large number of neutral symbols are transmitted between non-neutral symbols so the source link layer inserts symbols that artificially cause a transition in the disparity. The target link layer constantly monitors the changes in disparity. When the disparity changes inappropriately, an error is assumed to have corrupted the data. Similarly, in checksum verifications, a source device incorporates data, called a checksum, into a data transmission comprising a summation of logical zeros and/or logical ones. The target device's link layer receives the checksum and compares it to a summation maintained by the target device. When the summations do not match, an error is assumed to have occurred in the data transmitted since the last checksum. In response, the target device requests a retransmission of the data since the last checksum or, in some cases, simply discards the response.
The number of symbols for disparity checks or checksums inserted into the data stream affects the bandwidth of the communication medium and the latency of the data transmission. The bandwidth of a communication medium is a measure of the amount of data that can transmit between a source device and a target device via the communication medium per unit of time. The latency of a data transmission across that medium is a measure of the average amount of time that elapses between requesting the transmission of data at the source device and verification of the data by the target device, thereby allowing the target device to use the data. Latency is adversely affected when error verification data, sometimes referred to as an error verification token, is not transmitted often enough, since the target device is proscribed from using the data until it has been verified. Link layers insert error verification data at a fixed frequency or transaction layers embed the data directly into the packets. Inserting the error verification data at a fixed frequency does not take into account the size of packets, for instance, an important factor for determining a balance of latency against bandwidth. When error verification data is received prior to receiving a complete packet, the packet may not be used until the remainder of the packet is verified, or when the next error verification data is received. On the other hand, the method of inserting verification data into each packet significantly restricts the functionality and potential functionality of the data link layer.